package cm.heclouds.onenet.iot.api.entity.application.device;

import cm.heclouds.onenet.iot.api.entity.application.BasePageableDeviceRequest;
import cm.heclouds.onenet.iot.api.entity.enums.EventType;

import java.util.Date;
import java.util.Objects;

/**
 * 设备事件历史数据查询请求
 */
public class QueryDeviceEventHistoryRequest extends BasePageableDeviceRequest<QueryDeviceEventHistoryResponse> {

    public QueryDeviceEventHistoryRequest() {
        super("event-log");
    }

    /**
     * 设置产品ID
     * @param productId 产品ID
     */
    public void setProductId(String productId) {
        queryParam("product_id", productId);
    }

    /**
     * 设置设备名称
     * @param deviceName 设备名称
     */
    public void setDeviceName(String deviceName) {
        queryParam("device_name", deviceName);
    }


    /**
     * 设置事件功能点标识
     * @param identifier 事件功能点标识
     */
    public void setIdentifier(String identifier) {
        queryParam("identifier", identifier);
    }

    /**
     * 设置事件类型
     * @param eventType 事件类型
     */
    public void setEventType(EventType eventType) {
        queryParam("event_type", eventType);
    }

    /**
     * 设置查询起始时间
     * @param startTime 查询起始时间
     */
    public void setStartTime(Date startTime) {
        queryParam("start_time", Objects.isNull(startTime)? null: startTime.getTime());
    }

    /**
     * 设置查询结束时间
     * @param endTime 查询结束时间
     */
    public void setEndTime(Date endTime) {
        queryParam("end_time", Objects.isNull(endTime)? null: endTime.getTime());
    }

    @Override
    protected Class<QueryDeviceEventHistoryResponse> getResponseType() {
        return QueryDeviceEventHistoryResponse.class;
    }


}
